package Project;

import java.awt.BorderLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;

import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class gui extends JPanel
{	
	protected JButton b1 ;
    JButton openButton, saveButton;
    JTextArea log;
    JFileChooser fc;
    File fileDirectory;
    
    public JTextArea getLog()
    {
    	return log;
    }
    
    public void setFileDirectory(File f)
    {
    	f = fileDirectory;
    }
    
    public File getFileDirectory()
    {
    	return fileDirectory;
    }    

    public gui() 
    {
    	JButton b1 = new JButton();

    	b1.setText("execute");
    	b1.setVerticalTextPosition(AbstractButton.CENTER);
    	b1.setHorizontalTextPosition(AbstractButton.LEADING); //aka LEFT, for left-to-right locales
    	b1.setMnemonic(KeyEvent.VK_D);
    	b1.setActionCommand("disable");


    	//Listen for actions on buttons 1 and 3.
    	b1.addActionListener(new ActionListener() 
    	{
    		// execute action
    		public void actionPerformed(ActionEvent e) 
    		{
    			//System.out.println("Works");
    			//System.out.println(log.getText());
    		
    			//System.out.println("creating preproc");
    			    			
    			preproc p = new preproc(log);
    		}
    	});
    	b1.setToolTipText("Click this button to excute!");

    	//Add Components to this container, using the default FlowLayout.
    	add(b1);   
   
    	//Create the log first, because the action listeners
    	//need to refer to it.
    	log = new JTextArea(20,40);
    	log.setMargin(new Insets(5,5,5,5));
    	log.setEditable(false);
    	JScrollPane logScrollPane = new JScrollPane(log);

    	//Create a file chooser
    	String path = "C:\\Users\\Hanna\\Desktop\\";
    	fc = new JFileChooser(path);

    	//Uncomment one of the following lines to try a different
    	//file selection mode.  The first allows just directories
    	//to be selected (and, at least in the Java look and feel,
    	//shown).  The second allows both files and directories
    	//to be selected.  If you leave these lines commented out,
    	//then the default mode (FILES_ONLY) will be used.
    	//
    	fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    	//fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    	
    	//Create the open button.  We use the image from the JLF
	    //Graphics Repository (but we extracted it from the jar).
	    openButton = new JButton();
	    openButton.setText("choose dirctory") ;
	    openButton.addActionListener(new ActionListener() 
	    {	                   
	    	public void actionPerformed(ActionEvent e) 
	    	{
	    		//Handle open button action.
                if (e.getSource() == openButton) 
                {
                	int returnVal = fc.showOpenDialog(gui.this);
                	if (returnVal == JFileChooser.APPROVE_OPTION) 
                	{
                		File file = fc.getSelectedFile();
                        //This is where a real application would open the file.
                        if (file.isDirectory()) 
                        {
                        	for (String fl : file.list())
                            log.append(file.getAbsolutePath() + "\\" + fl + "\n");
                        	
                        	setFileDirectory(file);
                        }                           
                	} 
                    else 
                    {
                    	log.append("Open command cancelled by user." + "\n");
                    }
                	log.setCaretPosition(log.getDocument().getLength());
                } 
	    	}
	    });

	    //For layout purposes, put the buttons in a separate panel
	    JPanel buttonPanel = new JPanel(); //use FlowLayout
	    buttonPanel.add(openButton);

	    //Add the buttons and the log to this panel.
	    add(buttonPanel, BorderLayout.PAGE_START);
	    add(logScrollPane, BorderLayout.CENTER);
    }

    /**
     * Create the GUI and show it.  For thread safety, 
     * this method should be invoked from the 
     * event-dispatching thread.
     */
    private static void createAndShowGUI() 
    {

    	//Create and set up the window.
    	JFrame frame = new JFrame("Directory Chooser");
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    	//Create and set up the content pane.
    	gui newContentPane = new gui();
    	newContentPane.setOpaque(true); //content panes must be opaque
    	frame.setContentPane(newContentPane);

    	//Display the window.
    	frame.pack();
    	frame.setVisible(true);
    }

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		//Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() 
        {        
        	public void run() 
        	{
                createAndShowGUI(); 
            }
        });
	}

}
